home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 July / EnigmA AMIGA RUN 20 (1997)(G.R. Edizioni)(IT)[!][issue 1997-07 & 08][EAR-CD IV].iso / lightwave / arexx_macros / bubbles.lwm < prev    next >
Text File  |  1996-12-09  |  2KB  |  89 lines

  1. /* Bubbles!
  2.  * Convert selected points to Random size Spheres. (Cuts initial object)
  3.  * You select upper and lower radius bounds.
  4.  * (Point Distribution is a good one to create the points first)
  5.  * By Monte Ohrt © 1994 The Rendering Plant Inc. */
  6.  
  7.  
  8. Version = 1.0
  9. call addlib "LWModelerARexx.port", 0
  10. sysnam = 'Bubbles'
  11. signal on error
  12. signal on syntax
  13.  
  14. call addlib "rexxsupport.library", 0, -30, 0
  15. MATHLIB="rexxmathlib.library"
  16.  IF POS(MATHLIB, SHOW('L')) = 0 THEN
  17.    IF ~ADDLIB (MATHLIB, 0, -30, 0) THEN DO
  18.      call notify (1, "!Can't find "MATHLIB)
  19.        exit
  20.        END
  21.   
  22.  
  23. call sel_mode(USER)
  24. csurf=CurSurface()
  25.  
  26. call req_begin sysnam
  27.  
  28. id_txt = req_addcontrol("Bubbles!",'T', "")
  29. id_typ = req_addcontrol("Sphere Type", 'CH',"Globe Tesselated")
  30. id_srf = req_addcontrol("Surfaces",'R')
  31. id_tes = req_addcontrol("Tesselation Level", 'n')
  32. id_urad = req_addcontrol("Upper Radius",n,1)
  33. id_lrad = req_addcontrol("Lower Radius",n,1)
  34. id_sid = req_addcontrol("Globe Sides",'n')
  35. id_seg = req_addcontrol("Globe Segments",'n')              
  36. call req_setval id_typ, 1
  37. call req_setval id_tes, 2
  38. call req_setval id_urad, 5
  39. call req_setval id_lrad, 1
  40. call req_setval id_sid, 16
  41. call req_setval id_seg, 8
  42. if (~req_post()) then do
  43.     call req_end
  44.     exit
  45. end
  46. type = req_getval(id_typ)
  47. tess = req_getval(id_tes)
  48. surf = req_getval(id_srf)
  49. urad = (req_getval(id_urad))
  50. lrad = (req_getval(id_lrad))
  51. side = req_getval(id_sid)
  52. segs = req_getval(id_seg)
  53. call req_end()
  54. say surf Csurf
  55. if surf~=CSurf then call surface(surf)
  56.  
  57. n = xfrm_begin()
  58. do i = 1 to n
  59.   Point.i= xfrm_getpos(i)
  60.   end
  61. call xfrm_end()
  62. call CUT()
  63. call meter_begin n+1, 'Creating Spheres'
  64. do i=1 to n
  65.   if (type=1) then do
  66.     rad = (lrad+(urad-lrad)*(randu()))
  67.     call MAKEBALL(rad,side,segs,point.i)
  68.     call meter_step
  69.     end
  70.   else do
  71.     rad = (lrad+(urad-lrad)*(randu()))
  72.     call MAKETESBALL(rad,tess,point.i)
  73.     call meter_step
  74.     end
  75.   end
  76. call remlib "LWModelerARexx.port"
  77. exit
  78.  
  79. syntax:
  80. error:
  81.   call end_all
  82.    t=Notify(1,'!Rexx Script Error','@'ErrorText(rc),'Line 'SIGL)
  83.    exit
  84.  
  85. PointCount: PROCEDURE
  86.   n=XFRM_BEGIN()
  87.   call END_ALL()
  88.   return n
  89.